package edu.gdpu.memory.stringtable;

import java.util.ArrayList;
import java.util.List;

/**
 * @author mazebin
 * @date 2021年 07月14日 18:01:21
 * StringTable定义
 * 1. stringTable数据结构为一个hash表（数组+链表），不可扩容，不可重复
 * 2. 常量池中的字符串仅是符号，第一次用到才变为对象
 * 3. 其创建方式为懒创建，用到时才创建。
 * 演示StringTable位置(1.8在堆内存，1.6在方法区内的常量池)
 * 在jdk8下设置 -Xmx10m :堆得最小值
 * -XX:-UseGCOverheadLimit
 * 在jdk6下设置 -XX:MaxPermSize=10m
 */
public class StringTableTest1 {
    public static void main(String[] args) {
        List<String> strings = new ArrayList<>();
        int i=0;
        try{
         for(int j=0;j<260000;j++){
             strings.add(String.valueOf(j).intern());
             i++;
         }
        }catch (Throwable  e){
            e.printStackTrace();
        }finally {
            System.out.println(i);
        }
    }
}
